package com.ruoyi.wxapi;

import cn.hutool.core.lang.UUID;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.wx.domain.ACat;
import com.ruoyi.wx.service.IACatService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.concurrent.TimeUnit;

/**
 * author：pan
 * 微信小程序  猫咪信息（获取）
 *
 */

@RestController
@RequestMapping("/wxapi")
public class WxCatMessageController {

//    //测试api
//    @GetMapping("test")
//    public R<Void> test() {
//        return R.ok();
//    }

    @Autowired
    private IACatService iaCatService;

    @Autowired
    private StringRedisTemplate redisTemplate;

    /**
     * 查询所有猫咪档案
     * @param aCat
     * @return
     */
    @GetMapping("/loadCatInfo")
    public AjaxResult loadCatInfo(ACat aCat){

        // Redis的key
        String key = "cat:info:loadCatInfo";

        // 去Redis缓存中查找
        String catListJson = redisTemplate.opsForValue().get(key);

        // 如果缓存中存在
        if(StrUtil.isNotBlank(catListJson)){

            //将数据转换
            List<ACat> aCatList = JSONUtil.toList(catListJson, ACat.class);

            //这里就不进行缓存时间更新了【已设置 永不过期】
            //直接返回数据
            return AjaxResult.success(aCatList);
        }

        // 如果没有则进数据库去查找
        List<ACat> aCatList = iaCatService.selectACatList(aCat);

        // 将数据存入Redis中【这里就不设置过期时间了】
//        redisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(aCatList), 30, TimeUnit.MINUTES);
        redisTemplate.opsForValue().set(key, JSONUtil.toJsonStr(aCatList));

        return AjaxResult.success(aCatList);
    }

}
